package Tech.yunjing.onlineStorage.handler;

import Tech.yunjing.onlineStorage.common.utils.FileUtils;
import org.apache.log4j.Logger;

import java.io.File;

/**
 * Created by lenovo on 2016/6/28.
 * 处理文件删除，改名，移动
 */
public class FileHandler {

    private static Logger logger = Logger.getLogger(FileHandler.class);

    /**
     *  新建目录
     *  @param  folderPath  String  如  c:/fqf
     *  @return  boolean
     */
    public static void newFolder(String  folderPath)  {
        try  {
            String  filePath  =  folderPath;
            filePath  =  filePath.toString();
            java.io.File  myFilePath  =  new  java.io.File(filePath);
            if  (!myFilePath.exists())  {
                myFilePath.mkdir();
            }
        }
        catch  (Exception  e)  {
            logger.debug("新建目录操作出错");
            e.printStackTrace();
        }
    }

    /**
     *  移动文件到指定目录
     *  @param  oldPath  String  如：c:/fqf.txt
     *  @param  newPath  String  如：d:/fqf.txt
     */
    public  void  moveFile(String  oldPath,  String  newPath)  {
        FileUtils.copyFile(oldPath,  newPath);
        delete(oldPath);

    }

    /**
     *  移动文件到指定目录
     *  @param  oldPath  String  如：c:/fqf.txt
     *  @param  newPath  String  如：d:/fqf.txt
     */
    public  void  moveFolder(String  oldPath,  String  newPath)  {
        FileUtils.copyFolder(oldPath,  newPath);
        delete(oldPath);

    }


    /** 文件重命名
     * @param path 文件目录
     * @param oldName  原来的文件名
     * @param newName 新文件名
     */
    public static void rename(String path,String oldName,String newName){
        if(!oldName.equals(newName)){//新的文件名和以前文件名不同时,才有必要进行重命名
            File oldFile=new File(path+"/"+oldName);
            File newFile=new File(path+"/"+newName);
            if(!oldFile.exists()){
                return;//重命名文件不存在
            }
            if(newFile.exists())//若在该目录下已经有一个文件和新文件名相同，则不允许重命名
                logger.debug(newName+"已经存在！");
            else{
                oldFile.renameTo(newFile);
            }
        }else{
            logger.debug("新文件名和旧文件名相同...");
        }
    }



    /**
     *  根据路径删除指定的目录或文件，无论存在与否
     *@param fileName  要删除的目录或文件
     *@return 删除成功返回 true，否则返回 false。
     */
    public static boolean delete(String fileName) {
        File file = new File(fileName);
        if (!file.exists()) {
            logger.debug("删除文件失败:" + fileName + "不存在！");
            return false;
        } else {
            if (file.isFile())
                return FileUtils.deleteFile(fileName);
            else
                return FileUtils.deleteDirectory(fileName);
        }
    }


}
